﻿/* IDEES
- Remplacer les F4 par des inputs avec autocomplétion en fonction du contenu de la base de données
- Faire un tableau global pour les différents messages d'erreurs ??

- Faire une fonction qui rajoute une ligne dans un tableau d'input quand la dernière ligne est utilisé (onchange)
- Penser à supprimer le bouton de la première ligne( S'IL EST TOUT SEUL ): il n'est pas possible de supprimer la première ligne.

*/

var anc_onglet;		// Nom de l'onglet visité avant l'actuel
var onglet_courant;	// Nom de l'onglet courant
var navigateur=navigator.appName;	// Nom du navigateur (pour distinguer entre opéra et firefox notamment)
var item;			// adulte, transport, sejour, ...
var categ;		// recherche_adulte, adulte_modif, ...
var anc_item;

// Indique sur quel onglet on arrive par défaut
// Tableau associatif. Parcourir avec la boucle for ... in ?
var onglet_defaut=new Array();
onglet_defaut={
		// Transport
		"transport":"convoyage",
		"transport_modif":"convoyage",
		"recherche_transport":"recherche",
		"transport_recherche_avance":"recherche_avance",
		// Adulte
		"adulte":"vacancier",
		"adulte_modif":"vacancier",
		"recherche_adulte":"recherche",
		"liste_adulte":"liste",
		"adulte_recherche_avance":"recherche_avance",
		// Animateur
		"animateur":"renseignement",
		"animateur_modif":"renseignement",
		"recherche_animateur":"recherche",
		"liste_animateur":"liste",
		"animateur_recherche_avance":"recherche_avance",
		// Candidat
		"candidat":"renseignement",
		"candidat_modif":"renseignement",
		"recherche_candidat":"recherche",
		"liste_candidat":"liste",
		"candidat_recherche_avance":"recherche_avance",
		// Inscription
		"inscription":"inscription",
		"inscription_modif":"inscription",
		"recherche_inscription":"recherche",
		"inscription_recherche_avance":"recherche_avance",
		// Sejour
		"sejour":"sejour",
		"sejour_modif":"sejour",
		"recherche_sejour":"recherche",
		"liste_sejour":"liste",
		"sejour_recherche_avance":"recherche_avance",
		// Prospect
		"prospect":"prospect",
		"prospect_modif":"prospect",
		"recherche_prospect":"recherche",
		"liste_prospect":"liste",
		"prospect_recherche_avance":"recherche_avance",
		// Usager
		"usager":"usager",
		"usager_modif":"usager",
		"recherche_usager":"recherche",
		"liste_usager":"liste",
		"usager_recherche_avance":"recherche_avance",
};


function transform(element){
	$(element).combobox();
	alert(element);
}





/*********************Charge un onglet**************************
 * Charge un onglet en indiquant l'ancien onglet et
 * en appelant la fonction change_onglet()
 * Argument:
 * 			- onglet	l'onglet concerné
 **************************************************************/
function charger_onglet(onglet){
	anc_onglet = onglet;
	change_onglet(anc_onglet);
}

/*************************** AJAX *******************************
 * Fonction qui permet d'aller à une page en utilisant
 * ajax.
 * Cette fonction exécute également le code javascript qui se trouve
 * dans des balises comme:
 * 		<div class="javascript" id="animateur_javascript">
 * 
 * Argument:
 * 			- categorie		la categorie (transport, 
 * 							animateur, etc)
 ***************************************************************/
function go(categorie){
	item=categorie.replace(/recherche_|_modif|liste_|_recherche_avance/g, '');
	categ=categorie;
	highlight(item);
	var xmlhttp;
	if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp = new XMLHttpRequest();
	} else {// code for IE6, IE5
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			document.getElementById("corps").innerHTML = xmlhttp.responseText;
			activer_datepicker();
			charger_onglet(onglet_defaut[categorie]);
			
			// On sélectionne le code javascript, puis on l'exécute
			code = document.getElementById(item+"_javascript");
			eval(code.innerHTML);
		}
	}
	xmlhttp.open("GET", "./"+item+"/"+categorie+".php", true);
	xmlhttp.send();
}


/*******************************************************************
 * Fonction qui permet de mettre en évidence l'item du menu
 * sélectionné en changeant la classe css.
 *******************************************************************/
function highlight(){
	if(anc_item!=null){
		document.getElementById('item_'+anc_item).className='item_inactif';
	}
	document.getElementById('item_'+item).className='item_actif';
	anc_item=item;
}


/***************************************************
 * Fonction pour pouvoir utiliser le calendrier
 ***************************************************/
function activer_datepicker(){
	$(function(){
		$(".date").datepicker(
				{
					changeMonth:true,
					changeYear:true
				});
	});
}

/***************** FIL D'ARIANE *********************
 * Affiche le chemin actuel pour que l'utilisateur
 * sache sur quelle page il se trouve.
 ****************************************************/
function breadcrumb(){
	var node = document.getElementsByTagName("body")[0];
	var categorie='';
	var parent = node.parentNode;
	var name= window.location.pathname.split("/");
	
	///name=name[3];	
	name=name[2];
	
	var reg_modif=new RegExp("(modif)", "g");
	var reg_recherche=new RegExp("(recherche)", "g");
	var reg_liste=new RegExp("(liste)", "g");
	
	//alert(item+"\n"+categ);

	if(reg_modif.test(categ))
		categorie="Modification";
	else if(reg_recherche.test(categ))
		categorie="Recherche";	
	else if(reg_liste.test(categ))
		categorie="Liste";
	else
		categorie="Création";	
	
	/*
	name=name.replace('.php','');	// on enlève le '.php'
	name=name.replace('_modif','');	// on enlève le '_modif'
	name=name.replace('recherche_','');
	name=name.replace('liste_','');
	*/
	if (categorie=="Modification" || categorie=="Création"){
		var chemin=upperFirst(item)
		+"<span class='chevron'> > </span>"
		+ categorie 
		+ "<span class='chevron'> > </span>"
		+ upperFirst(onglet_courant);
	}else{
		var chemin=upperFirst(item) 
		+"<span class='chevron'> > </span>"
		+ categorie;
	}
	var elm = document.getElementById('path');
	if (elm == null){
		var path = document.createElement("div");
		path.setAttribute('id', 'path');
		path.innerHTML=chemin;
		parent.insertBefore(path, node);
	}else{
		elm.innerHTML=chemin;
	}
}

/*******************************************************************************
 * Fonction qui met la première lettre d'une chaine des caractères en majuscule,
 * et le reste en minuscule.
 * Argument:
 * 			- string	la chaine de caractères à modifier
 *******************************************************************************/
function upperFirst(string){
	return string.substr(0,1).toUpperCase()+string.substr(1,string.length).toLowerCase();
}

/*************************** TABLEAU D'INPUT **********************************
 * Les deux fonctions remove_line et et add_line
 * servent à ajouter ou enlever des lignes à des tableau remplis d'input. Il
 * suffit que le tableau ait une première ligne qui sert de modèle (avec des id
 * en ***1; les id des inputs des autres lignes se finira par 2, 3 et etc selon
 * le nombre de lignes.
 * Pour utiliser ces deux fonctions, il suffit de rajouter les lignes suivantes:
 * 		<input type="button" value="-" class="tab_button"
 * 		onclick="remove_line(id_du_tableau);"/> <input type="button" value="+"
 * 		class="tab_button" onclick="add_line(id_du_tableau);"/>
 * 
 ******************************************************************************/

	/***************************Supprime une ligne*****************************
	 * Une ligne précise (2 arguments) ou la dernière ligne 
	 * (seulement l'id du tableau)
	 * Arguments:
	 * 			- tableId	l'id du tableau
	 * 			- row		la ligne à supprimer
	 *************************************************************************/
	function remove_line(tableId, row){	
		var table = document.getElementById(tableId);
		var rowCount = table.rows.length;
		if (row == null) {
			var i = rowCount - 1;
		}
		else 
			var i = row.parentNode.parentNode.rowIndex;
		
		if (rowCount >= 3) 
			table.deleteRow(i);		
	}
	
	
	function remove_all_line(tableId){
		var id_table='#'+tableId;
		var $table = $(id_table);
		var rows = $table.find('tbody > tr').get();
		$(rows).each(function(){
			$(this).children().each(function(){
					$(this).children().each(function(){
						if($(this).attr("type")!="button")
							$(this).val("")
					});
			});
			if($table.find('tbody > tr').get().length>1)
				$(this).remove();
		});
		
	}
	/*******************Ajout d'une ligne à un tableau d'input******************
	 * La fonction fait un clone de la première ligne, avec les id et name
	 * qui se finissent par "1" (car c'est la première ligne). Ce clone est
	 * modifié ensuite en incrémentant le chiffre.
	 * Argument:
	 * 			- tableId	l'id du tableau
	 **************************************************************************/
	function add_line(tableId){
		var table = document.getElementById(tableId);
	
		var tblBody = table.tBodies[0];
		var newNode = tblBody.rows[0].cloneNode(true);	// que signifie le true ?
		
		var rowCount = table.rows.length;
		var cellCount = newNode.cells.length;
		/*for(i=0; i<cellCount; i++){
			if(newNode.cells[i].className=="supprim"){
				//unhide(newNode.cells[i]);
				newNode.cells[i].disabled=false;
			}
		}
		alert(cellCount);
		table.rows[0].cells[cellCount-1].style.display="table-cell";
		*/
		
		var reg=new RegExp("([0-9]+)", "g");	// autre façon: var reg=/[0-9]+/g
		var reg2=new RegExp("(hasDatepicker)", "g");
		var texte = newNode.innerHTML;	
		texte=texte.replace(reg, rowCount+'');	// le fait d'ajouter une chaine vide au nombre permet de le convertir en entier
		texte=texte.replace(reg2, '');	// pour le datePicker
		newNode.innerHTML = texte;
		tblBody.appendChild(newNode);
		  
		// Pour activer le datepicker
		activer_datepicker();
	}


/******************************** validate ***********************************
 * Utilisation: onchange="validate(this,
 * <expression_reguliere>, [message_d_erreur]);" dans le input Exemple:
 * 
 * 		onchange="validate(this, '^[0-9]{8,12}$');" 
 * 
 * ou alors:
 * 
 * 		onfocus="setInterval(validate,1000,this, '^[A-Za-z- ]+$','Cette expression
 * 
 * est incorrecte');" pour vérifier toutes les secondes (1000 millisecondes) le
 * contenu du champ. Les bugs pouvant être engendré par cela ont déjà été
 * résolus.
 * 
 * Donc, en principe, tout fonctionne bien et s'il y a un problème, c'est
 * sûrement à cause de l'expression régulière.
 *
 *Arguments:
 *		- obj			champ (input text)
 *		- expreg		expression régulière
 *		- message		message d'erreur
 *****************************************************************************/
function validate(obj, expreg, message){
	// Déclaration des variables et récupération des objets
	var field=document.getElementById(obj.id);
	var parent=field.parentNode;
	var reg=new RegExp("("+expreg+")", "g");
	var msg=document.createElement("div");

	msg.setAttribute('id', 'val_'+obj.id);
	msg.setAttribute('class', 'msg_validate');
	if(message==null)	// n'a pas été défini
		msg.innerHTML="Expression incorrecte";
	else
		msg.innerHTML=message;
	if (field.value!=""){	// Si le champ n'est pas vide
		if(!reg.test(field.value)){	// Si la valeur du champ ne correspond pas à l'expression régulière
			changer_bordure(field, "1px", "red" );
			var elm = document.getElementById('val_'+obj.id);
			if (elm == null)
				parent.appendChild(msg);
			//var fieldPos = new positionInfo(field);
			//var x = fieldPos.getElementRight();
			//var y = fieldPos.getElementTop();
			var x = findPosX(field)+field.scrollWidth;
			var y = findPosY(field);
			//~ msg.style.left=(x-35)+'px';
			//~ msg.style.top=(y-176)+'px';
			msg.style.left=x+'px';
			msg.style.top=(y-1)+'px';
			//fied.className = field.className.replace(/(correct)/g, '');
			//field.className += " " + "incorrect";
		}else{		// Si la valeur du champ est un nombre
			enlever_msg(parent, obj.id);
			//fied.className = field.className.replace(/(incorrect)/g, '');
			//field.className += " " + "correct";
			changer_bordure(field, "1px", "green" );
		}
	}else{	// Si le champ est vide
		enlever_msg(parent, obj.id);
		enlever_bordure(field);
	}
}

/*************************** change bordure ****************************
 * Modification de la bordure d'un champ .
 * Maintenant, on utilise plutôt un outline qu'un border car le outline
 * ne déplace pas les éléments adjacents peu importe sa taille.
 * Argument:
 * 			- champ
 * 			- largeur
 * 			- couleur	couleur de la bordure
 ***********************************************************************/
function changer_bordure(champ, largeur, couleur){
	/*champ.style.borderColor=couleur;
	champ.style.borderWidth=largeur;*/
	champ.style.outlineStyle="solid";
	champ.style.outlineColor=couleur;
	champ.style.outlineWidth=largeur;
}

// Enlève la bordure (outline) quand 
function enlever_bordure(champ){
	champ.style.outlineStyle="none";
}


// Enlève le message d'erreur
function enlever_msg(parent, id){
	var elm = document.getElementById('val_'+id);
	if (elm != null)
		parent.removeChild(elm);
}

/******************** FindPosX *************************
 * Renvoie la position x (bord gauche) d'un élément 	
 ******************************************************/
function findPosX(obj){
  var curleft = 0;
  if(obj.offsetParent)
      while(1) 
      {
        curleft += obj.offsetLeft;
        if(!obj.offsetParent)
          break;
        obj = obj.offsetParent;
      }
  else if(obj.x)
      curleft += obj.x;
  return curleft;
}

/******************** FindPosY *************************
 * Renvoie la position y (bord haut) d'un élément 	
 ******************************************************/
function findPosY(obj){
	var curtop = 0;
	if(obj.offsetParent)
		while(1){
			curtop += obj.offsetTop;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		}
	else if(obj.y)
		curtop += obj.y;
	return curtop;
}

/******************* Calcul du nombre de places *************************
 * Fonction pour calculer le nombre de places restantes dans un transport.
 ************************************************************************/
function calcul_nb_places(){
	var checkbox = document.getElementById('affecter_accompagnateurs');
	var places_restantes = document.getElementById('places_restantes');
	var places_vehicule = document.getElementById('places_vehicule').value;
	var places_inscrits = document.getElementById('places_inscrits').value;
	var places_accompagnateurs = document.getElementById('places_accompagnateurs').value;
	var nb=0;
	if (checkbox.checked==true)
		nb = parseInt(places_vehicule)-parseInt(places_inscrits); 
	else
		nb = parseInt(places_vehicule)-parseInt(places_inscrits)-parseInt(places_accompagnateurs); 
	places_restantes.value = nb;
}

/************************* CHANGE_ONGLET ********************************
 * Fonction qui permet de changer d'onglet, en chargeant le contenu et en
 * changeant les onglets concernés de classe
 ************************************************************************/
function change_onglet(name){
	document.getElementById('onglet_'+anc_onglet).className = 'onglet_0 onglet';
	document.getElementById('onglet_'+name).className = 'onglet_1 onglet';
	hide(document.getElementById('contenu_onglet_'+anc_onglet));
	unhide(document.getElementById('contenu_onglet_'+name));
	anc_onglet = name;
	onglet_courant = document.getElementById('onglet_'+name).innerHTML;
	breadcrumb();	// pour initialiser le fil d'ariane puis l'actualiser
}


// Ajoute un paramètre dans le textarea des paramètres dans transport
function add_param(){
	var conjoint = document.getElementById("div_conjoint");
	var textarea = document.getElementById("parametres");
	var combo = document.getElementById("combo_param");
	var val = combo.options[combo.selectedIndex];
	
	textarea.value+=val.text+"\n";

	if (val.text=="Couple"){
		unhide(conjoint);
		//val.disabled=false;
	}else{
		hide(conjoint);
		if (navigateur=='Netscape')
			hide(val);
		else
			val.disabled=true;
	}
}

function reset_param(){
	var combo = document.getElementById("combo_param");
	if (navigateur=='Netscape'){
		
		for(i=0; i<combo.options.length; i++){
			//alert("test");
			//alert(navigateur+'|'+combo.options[i]);
			unhide(combo.options[i]);	
		}
	}else{
		for(i=0; i<combo.options.length; i++)
			combo.options[i].disabled=false;
	}
}


// Cache un élément
function hide(elm){
	elm.style.display = 'none';
}

// Rend un élément caché visible
function unhide(elm){	
	elm.style.display = 'block';
}
    			
// Change la visibilité (caché ou visible) d'un élément
function hide_out(elm){
	if (elm.style.display!='none') hide(elm);
	else
		unhide(elm);
}

function updateInput(source,champ){

	if(source.tagName=="SELECT")
		valeur=disp_text(source);
	else
		valeur=source.value;
	var tab=$(champ);
	$.each(tab, function (index, champ){
		champ.value = valeur
	});
}

function disp_text(select)
{
	var w = select.selectedIndex;
	var selected_text = select.options[w].text;
   return selected_text;
}

function obtenirDate(id){

	//alert("test obtenirDate");
    // on recupere la date du systeme. C'est elle qui est directement appelee en premier dans la page
    var x = new Date();
 
    // on intercepte le jour de la semaine, attention, 0 correspond a dimanche, lundi a 1...
    var jour = x.getDay();
    
    // on intercepte la date du jour
    var nb = x.getDate();
    
    // on ajoute un zero (0) devant si la date du jour est inferieure a 10 (plus joli)
    if (nb <= 9) 
        nb = "0" + nb;
    
    // on intercepte l'annee
    var annee = x.getFullYear();
    ;
    
    // on ajoute un zero (0) si le numero du mois est inferieur a 10
    var mois = x.getMonth();
    if ((mois + 1) < 9) 
        mois = "0" + (mois + 1);
    
    // on cree la nouvelle chaine
    var date = nb + "/" + mois + "/" + annee;
	var source = document.getElementById(id);
    source.value = date;
}





/**********************************************************/
/**Partie sur les fonctions d'autocomplétion pour combobox*/
/**********************************************************/

/*Fonction pour l'auto-completion d'une box*/

(function( $ ) {
      $.widget( "ui.combobox", {
         _create: function() {
            var self = this;
            var select = this.element,
               theWidth = select.width(),
               selected = select.children( ":selected" ),
               theTitle = select.attr("title"),
               value = selected.val() ? selected.text() : "";
            select.hide();
            var input = $( "<input style=\"width:" + theWidth + "px;float:left\">" )
               .val( value )
               .attr('title', '' + theTitle + '')
               .autocomplete({
                  delay: 0,
                  minLength: 0,
                  source: function( request, response ) {
                     var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
                     response( select.children( "option" ).map(function() {
                        var text = $( this ).text();
                        if ( this.value && ( !request.term || matcher.test(text) ) )
                           return {
                              label: text.replace(
                                 new RegExp(
                                    "(?![^&;]+;)(?!<[^<>]*)(" +
                                    $.ui.autocomplete.escapeRegex(request.term) +
                                    ")(?![^<>]*>)(?![^&;]+;)", "gi"
                                 ), "<strong>$1</strong>" ),
                              value: text,
                              option: this
                           };
                     }) );
                  },
                  select: function( event, ui ) {
                     ui.item.option.selected = true;
                     //select.val( ui.item.option.value );
                     self._trigger( "selected", event, {
                        item: ui.item.option
                     });
                  },
                  change: function( event, ui ) {
				  	
                     if ( !ui.item ) {
                        var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $(this).val() ) + "$", "i" ),
                           valid = false;
                        select.children( "option" ).each(function() {
                           if ( this.value.match( matcher ) ) {
                              this.selected = valid = true;
                              return false;
                           }
                        });
                        if ( !valid ) {
                           // remove invalid value, as it didn't match anything
                           $( this ).val( "" );
                           select.val( "" );
                           return false;
                        }
                     }
                  }
               })
               .addClass( "ui-widget ui-widget-content ui-corner-left" );
            var span = $("<span style=\" white-space: nowrap;\"></span>")
                  .append(input).insertAfter( select );
            input.data( "autocomplete" )._renderItem = function( ul, item ) {
               return $( "<li></li>" )
                  .data( "item.autocomplete", item )
                  .append( "<a>" + item.label + "</a>" )
                  .appendTo( ul );
            };
 
            $( "<button type='button' style='float:left'> </button>" )
               .attr( "tabIndex", -1 )
               .attr( "title", "Show All Items" )
               .insertAfter( input )
               .button({
                  icons: {
                     primary: "ui-icon-triangle-1-s"
                  },
                  text: false
               })
               .removeClass( "ui-corner-all" )
               .addClass( "ui-corner-right ui-button-icon" )
               .click(function() {
                  // close if already visible
                  if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
                     input.autocomplete( "close" );
                     return;
                  }
 
                  // pass empty string as value to search for, displaying all results
                  input.autocomplete( "search", "" );
                  input.focus();
               });
         }
      });
   })(jQuery);

/*fonction de chargement de donnees pour les listes*/
function uploadData(page,id){
	$.getJSON(page, function(data) {
 	var select = document.getElementById(id);
 	
 	 $.each(data, function(key, val) {
	 	var temp=val.id+"-"+val.valeur;
	 	select.add(new Option(temp, val.id), null);
  		});
	});
}

/*****************************************************************************/


function updateFormulaire(page,id,objet){
	
	$.ajax({
		
		url:page,
		data:"id="+id,
		type:"post",
		dataType:"xml",
		statusCode: {
   			 404: function() {
     			 alert('page not found');
    		}
  		},
		success:function(xml){
			$(xml).find(objet).contents().each(
			function(){
				tag="#"+this.nodeName;
				var balise = $(tag).attr("nodeName");
				switch(balise){
					
				case "SELECT" :	
								$(tag +' option[value='+$(this).text()+']').attr("selected", "selected");
								break;
								
				case "TABLE" : 	
								remove_all_line($(this).attr('table'));
								var tab_commentaire = $(this).children();
								var nb_tab = $(tag).children('tbody').children();
								
								for(var i=0;i<tab_commentaire.size()-1;i++)
									add_line($(this).attr('table'));
								$(tab_commentaire).each(
									function (){
										$(this).children().each(
											function(){
												tag="#"+this.nodeName;
												$(tag).val($(this).text());
											}
										);
									});
								break;
							
				default : 
							if ($(tag).attr("type") == "checkbox") {
								if ($(this).text() == 1) 
									$(tag).attr('checked', true);
								else 
									$(tag).attr('checked', false);
							}
							else 
								$(tag).val($(this).text());
							break;
				}
			})
		}
	});
}

/*****Pour les champs de séjour*****/


function temps(date)
{
	var d = new Date(date[2], date[1] - 1, date[0]);
	return d.getTime();
}

function calcul_duree(){ 
	var date1=$("#date_depart_sejour").val();
	var date2=$("#date_retour_sejour").val();
	var debut = temps(date1.split("/"));
	var fin = temps(date2.split("/"));
	var nb = (fin - debut) / (1000 * 60 * 60 * 24);
	$("#duree_sejour").val(nb);
} 

/**********************************************/
/*****Fonction pour les tables de recherches***/
/**********************************************/



/*retourne un tableau les lignes sélectionnées du tableau*/
function fnGetSelected(oTableLocal){
	var aReturn = new Array();
	var aTrs = oTableLocal.fnGetNodes();

	for (var i = 0; i < aTrs.length; i++) {
		if ($(aTrs[i]).hasClass('row_selected')) {
			aReturn.push(aTrs[i]);
		}
	}
	return aReturn;
}


/*suppression d'une ligne de la table, ainsi que dans la base*/
function deleteRow(id,table,id_ref){
	
	var s_data = "array="+tab_id+"&table="+table+"&id_ref="+id_ref;
	var oTableLocal = $(id).dataTable();
	var tab_selected = fnGetSelected(oTableLocal);
	
	var tab_id= new Array()
	$(tab_selected).each(function(){
		tab_id.push($(this).attr("id"));
	})
	var s_data = "array="+tab_id+"&table="+table+"&id_ref="+id_ref;
	var i = 0;
	$.ajax({
				url:"./lib/delete.php",
				type: "POST",
				global : false,
				dataType:"html",
      			data: s_data,
				success:function(msg){
					if(msg==1)
						for(i=0;i<tab_selected.length;i++)
							oTable.fnDeleteRow( tab_selected[i] );
							var oTableLocal = $(id).dataTable();
				}
			})

}


/*transforme un tableau et dataTable en lui passant son id en paramètre 
 * ex : init_tab("#id_exemple)
 */
function init_tab(id,table,div_col){
	var asInitVals = new Array()
	$('#table_recherche tr').click( function() {
		if ( $(this).hasClass('row_selected') )
			$(this).removeClass('row_selected');
		else
			$(this).addClass('row_selected');
	} );
		oTable = $(id).dataTable(
		{
			"sScrollY": "700px",
			"sScrollX": "1014px",
			"bFilter":true,
			"bJQueryUI":true,
			"sPaginationType": "full_numbers",
			"sDom": '<"H"Tlr>t<"F"ip>',
			"oTableTools": {
								"sSwfPath": "./lib/media/swf/copy_cvs_xls_pdf.swf",
								"aButtons": [
												"xls",
												{
													"sExtends": "pdf",
													"sPdfOrientation": "landscape",
													"sPdfMessage": "Brin de Soleil : "+table
												},
												"print",
												{
													"sExtends":    "choix",
													"sButtonText": "Choix colonnes",
													"sDiv":        div_col,
												}
											]
							}
		 });
	
	$("tfoot input").keyup( function () {
		/* Filter on the column (the index) of this element */
		oTable.fnFilter( this.value, $("tfoot input").index(this) );
	} );

	/*
	 * Support functions to provide a little bit of 'user friendlyness' to the textboxes in 
	 * the footer
	 */
	$("tfoot input").each( function (i) {
		asInitVals[i] = this.value;
	} );
	
	$("tfoot input").focus( function () {

		if ( this.className == "search_init" )
		{
			this.className = "";
			this.value = "";
		}
	} );
	
	$("tfoot input").blur( function (i) {
		if ( this.value == "" )
		{
			this.className = "search_init";
			this.value = asInitVals[$("tfoot input").index(this)];
		}
	} );
	
	$(window).bind('resize', function () {
		oTable.fnAdjustColumnSizing();
	} );
}


/*montre/cache une colonne du tableau*/
function fnShowHide( iCol,id )
{	
	var oTable = $(id).dataTable();
	var bVis = oTable.fnSettings().aoColumns[iCol].bVisible;
	oTable.fnSetColumnVis( iCol, bVis ? false : true );
}

/*sélectionne toutes les lignes visibles du tableau*/
function selectAll(b,id){
	
	var oTableLocal = $(id).dataTable();
	var aTrs = oTableLocal.fnGetNodes();
	for (var i = 0; i < aTrs.length; i++) {
		if (b) {
			if (!$(aTrs[i]).hasClass('row_selected')) {
				$(aTrs[i]).addClass('row_selected');
			}
		}
		else {
			if ($(aTrs[i]).hasClass('row_selected')) {
				$(aTrs[i]).removeClass('row_selected');
			}
		}
	}
	
}

function dialogCol(id){

	$(id).dialog({autoOpen:false,
					resizable:false,
							buttons: { "Ok": function() {
											 $(this).dialog("close");
											}
									 },
							title:"Choix colonnes",
							modal:true,
							height:500,
							width:800				
						});
	
}


/**Fonction pour adulte, afin de charger une adresse a partir d'une adresse autre adresse de la fiche**/

function loadAdresse(id){

	var id_select = "#"+id;
	var id_parent= $(id_select).parent().attr("id");
	var value = $(id_select).val();
	var tab_champs_source;
	var tab_champs_dest;
	switch(value){
		
		case "0" : 	tab_champs_source = new Array("","#ad_vacancier_nom","#ad_vacancier_qualite","#ad_vacancier_adresse","#ad_vacancier_code_postal",
												"#ad_vacancier_ville","#ad_vacancier_telephone");
				break;
		
		case "1" : 	tab_champs_source = new Array("#ad_etablissement_etablissement1","#ad_etablissement_nom1","#ad_etablissement_qualite1","#ad_etablissement_adresse1","#ad_etablissement_code_postal1",
											"#ad_etablissement_ville1","#ad_etablissement_telephone1");
				break;
				
		case "2" : tab_champs_source = new Array("#ad_etablissement_etablissement2","#ad_etablissement_nom2","#ad_etablissement_qualite2","#ad_etablissement_adresse2","#ad_etablissement_code_postal2",
											"vad_etablissement_ville2","#ad_etablissement_telephone2");
				break;
				
		case "3" : tab_champs_source = new Array("#ad_responsable_etablissement1","#ad_responsable_nom1","#ad_responsable_qualite1","#ad_responsable_adresse1","#ad_responsable_code_postal1",
											"#ad_responsable_ville1","#ad_responsable_telephone1");
				break;
				
		case "4" : tab_champs_source =new Array("#ad_responsable_etablissement2","#ad_responsable_nom2","#ad_responsable_qualite2","#ad_responsable_adresse2","#ad_responsable_code_postal2",
											"#ad_responsable_ville2","#ad_responsable_telephone2");
				break;
				
		case "5" : tab_champs_source = new Array("#ad_facturation_etablissement","#ad_facturation_nom","#ad_facturation_qualite","#ad_facturation_adresse","#ad_facturation_code_postal",
											"#ad_facturation_ville","#ad_facturation_telephone");
				break; 
		
	}	

	switch (id_parent) {
	
		case "vacancier":
			tab_champs_dest = new Array("", "#ad_vacancier_nom", "#ad_vacancier_qualite", "#ad_vacancier_adresse", "#ad_vacancier_code_postal", "#ad_vacancier_ville", "#ad_vacancier_telephone");
			break;
			
		case "etablissement1":
			tab_champs_dest = new Array("#ad_etablissement_etablissement1", "#ad_etablissement_nom1", "#ad_etablissement_qualite1", "#ad_etablissement_adresse1", "#ad_etablissement_code_postal1", "#ad_etablissement_ville1", "#ad_etablissement_telephone1");
			break;
			
		case "etablissement2":
			tab_champs_dest = new Array("#ad_etablissement_etablissement2", "#ad_etablissement_nom2", "#ad_etablissement_qualite2", "#ad_etablissement_adresse2", "#ad_etablissement_code_postal2", "#ad_etablissement_ville2", "#ad_etablissement_telephone2");
			break;
			
		case "responsable1":
			tab_champs_dest = new Array("#ad_responsable_etablissement1", "#ad_responsable_nom1", "#ad_responsable_qualite1", "#ad_responsable_adresse1", "#ad_responsable_code_postal1", "#ad_responsable_ville1", "#ad_responsable_telephone1");
			break;
			
		case "responsable2":
			tab_champs_dest = new Array("#ad_responsable_etablissement2", "#ad_responsable_nom2", "#ad_responsable_qualite2", "#ad_responsable_adresse2", "#ad_responsable_code_postal2", "#ad_responsable_ville2", "#ad_responsable_telephone2");
			break;
			
		case "facturation":
			tab_champs_dest = new Array("#ad_facturation_etablissement", "#ad_facturation_nom","#ad_facturation_qualite", "#ad_facturation_adresse", "#ad_facturation_code_postal", "#ad_facturation_ville", "#ad_facturation_telephone");
			break;
	}

	for (var i = 0; i < tab_champs_dest.length; i++) {
		if($(tab_champs_source[i]).val()!="")
			$(tab_champs_dest[i]).val($(tab_champs_source[i]).val());
		else	
			$(tab_champs_dest[i]).val("");
			
		$(id_select+" option[value='default']").attr("selected", "selected");
	}
}

function modifElement(page, formulaire, array_tab){
var tableau_f = new Array();
	$.post(page, $(formulaire).serialize());
	for (var tab in array_tab) {
		
		
		var rows = $(tab).find('tbody > tr');
		$(rows).each(function(){
			var tableau = new Array();
			$(this).children().each(function(){
				$(this).children().each(function(){
					if ($(this).attr("type") != "button") 
						tableau.push($(this).val());
				});
			
			})
			tableau_f.push(tableau);
		})
	}
	$.post(array_tab[tab],tableau);
}


function prospectToUsager(){

	if ($("#recherche").val() != null) {
		$.post("./prospect/prospect_to_usager.php", {
			id: $("#matricule").val()
		}, function(data){
			$(location).attr('href', "./brin.php");
		});
	}
	else
		alert("Vous n'avez pas renseigné de prospect");
}
